Questions
23 of 50
1What is a pseudo-class in CSS?
2How are pseudo-classes different from pseudo-elements?
3What is the syntax of a pseudo-class in CSS?
4Give some commonly used pseudo-classes.
5What does the :hover pseudo-class do?
6What’s the purpose of the :active pseudo-class?
7How does the :visited pseudo-class work for links?
8What is the :focus pseudo-class used for?
9What does the :checked pseudo-class do?
10How does the :disabled pseudo-class behave?
11What is the difference between :first-child and :first-of-type?
12How do :nth-child() and :nth-of-type() differ?
13How do you select every odd or even element using pseudo-classes?
14How can you style an element when it’s being hovered over along with its child?
15What does the :not() pseudo-class do?
16How can you use multiple pseudo-classes together?
17What is the difference between :link and :visited?
18What does the :target pseudo-class represent?
19How can you use :empty to detect empty elements?
20How does the :root pseudo-class differ from the html selector?
21What does the :valid and :invalid pseudo-class do?
22How can you use :required and :optional pseudo-classes in forms?
23What is the use of :in-range and :out-of-range?
24What does :read-only and :read-write do?
25How can you style an input field when it’s autofilled?
26How does the :focus-within pseudo-class work?
27What’s the difference between :focus and :focus-visible?
28What is the purpose of the :placeholder-shown pseudo-class?
29How can you style a checkbox when it is checked or unchecked?
30How can you style invalid form inputs without JavaScript?
31Can pseudo-classes be chained together? Give an example.
32What is the specificity of pseudo-classes compared to normal selectors?
33How can you use :not() effectively to exclude elements from styling?
34How does :has() pseudo-class work, and why is it powerful?
35Is :has() supported in all browsers?
36How does :is() differ from :where() in terms of specificity?
37How can you combine :is() or :where() with other selectors for cleaner code?
38What’s the difference between :nth-child() and :nth-last-child()?
39How can you style only the last element of a list using pseudo-classes?
40What does the :lang() pseudo-class do?
41How do you change a button’s color when hovered but not when disabled?
42How can you highlight the current section in a menu using :target?
43How can you style a form field differently when focused and valid?
44How do you style every third list item differently?
45How can you style alternate table rows without adding extra classes?
46How do you hide empty <p> tags using pseudo-classes?
47How can you style the parent when any child inside it is focused?
48How can you highlight a link only when it’s both focused and hovered?
49How can you style the first letter of only the first paragraph using pseudo-classes?
50How would you use :has() to select a <div> that contains an image?
23 / 50

What is the use of :in-range and :out-of-range?

Understanding the :in-range and :out-of-range Pseudo-Classes in CSS

The :in-range and :out-of-range pseudo-classes in CSS are used to style form elements based on whether their current value falls within or outside a specified range. These are particularly useful with input types like number, range, date, or time that have min and max attributes.

How They Work
  1. 1

    :in-range – Selects form elements whose value is within the specified min and max range.

  2. 2

    :out-of-range – Selects form elements whose value is outside the specified min and max range.

  3. 3

    These pseudo-classes update dynamically as the user interacts with the form.

Example: Using :in-range and :out-of-range

In this example, when the user enters a value within the range 1–10, the input has a green border and light green background. If the value is outside this range, it gets a red border and light red background, providing immediate visual feedback.

Best Practices
  1. 1

    Use :in-range and :out-of-range to provide instant feedback for numeric or date inputs.

  2. 2

    Combine with :required or :optional to enhance form usability.

  3. 3

    Ensure visual cues like color are distinguishable and accessible.

  4. 4

    Test across browsers, as support for some input types may vary.

Difficulty: 3/10
Topics: CSS pseudo-classes, form validation styling, user experience feedback

Scenario Questions

0-2 years experience
  1. 1

    How would you make a number input turn red when the user types a value outside the allowed range, without using JavaScript?

  2. 2

    What happens if a user enters 'abc' in an input with min='1' and max='100'? Will :out-of-range apply?

2-5 years experience
  1. 1

    Our form validation UI is broken — the input turns red even when the value is valid. What could be causing :out-of-range to trigger incorrectly?

  2. 2

    We’re using :in-range to show a subtle green border, but QA says it’s not visible enough on mobile. How would you debug and improve this without breaking accessibility?

5-8 years experience
  1. 1

    We’re building a global form system that supports date ranges across timezones. How would you handle :in-range/:out-of-range with user-entered dates that might be invalid due to timezone conversion?

  2. 2

    A legacy form uses text inputs with regex validation — we want to migrate to native HTML5 inputs with min/max. What edge cases in :in-range/:out-of-range behavior might catch us off guard during rollout?

8+ years experience
  1. 1

    We’re standardizing form styling across 12 product teams. How would you design a CSS architecture that safely leverages :in-range/:out-of-range while avoiding conflicts with custom validation libraries or legacy overrides?

  2. 2

    Our analytics show users abandon forms when validation feedback is unclear. How would you advocate for a system-wide adoption of these pseudo-classes, and what legacy browser support tradeoffs would you need to negotiate?

Follow-up Questions

  • What happens if you forget to set min/max on the input?
  • How would you style a range input differently from a text input using these pseudo-classes?
  • Do these work with all input types, or just number and date?